var map;
var polyline;
var polylinesArray = [];
// 距离标记数组
var lenArray = [];
// 默认经纬度 23.492, 111.315
var DefaultLat = 23.492;
var DefaultLng = 111.315;
// 缩放级别
var DefaultZoom = 8; // 默认情况下的zoom

var baiyunshan = Object();
baiyunshan.lat1 = 23.490879;
baiyunshan.lon1 = 111.333872;
baiyunshan.name = "白云山";

var longmumiao = Object();
longmumiao.lat1 = 23.485438;
longmumiao.lon1 = 111.311073;
longmumiao.name = "龙母庙";

var zhongshangongyuan = Object();
zhongshangongyuan.lat1 = 23.479854;
zhongshangongyuan.lon1 = 111.318509;
zhongshangongyuan.name = "中山公园";

var lijishen = Object();
lijishen.lat1 = 23.30787;
lijishen.lon1 = 111.28215;
lijishen.name = "李济深故居";

var changzhoujichang = Object();
changzhoujichang.lat1 = 23.5;
changzhoujichang.lon1 = 111.333333;
changzhoujichang.name = "常州机场";

var latlocale, lnglocale;
/*
 * *****************************************************************************/
//获取用户当前位置
/*
 * *****************************************************************************/
function getLocale() {
	latlocale = Android.getLatitude();
	lnglocale = Android.getLongitude();
	if (latlocale != null && lnglocale != null) {
		DefaultLat = latlocale;
		DefaultLng = lnglocale;
	}

}

/*
 * *****************************************************************************/
//调用java代码显示消息
/*
 * *****************************************************************************/
function showAndroidToast(toast) {
	Android.showToast(toast);
}

/*
 * *****************************************************************************/
// 地图初始化
/*
 * *****************************************************************************/
function MapInit() {
	// getLocale();
	directionsDisplay = new google.maps.DirectionsRenderer();
	var wuzhouCenter = new google.maps.LatLng(DefaultLat, DefaultLng); // 设置中心位置

	var myOptions = {
		zoom : DefaultZoom,
		center : wuzhouCenter,
		// 平移控件
		navigationControl : true,
		// 比例尺控件
		scaleControl : true,
		mapTypeControl : true,
		mapTypeControlOptions : {
			style : google.maps.MapTypeControlStyle.DROPDOWN_MENU
		},
		zoomControl : true,
		zoomControlOptions : {
			style : google.maps.ZoomControlStyle.SMALL
		},
		// 街道视图控件
		streetViewControl : true,
		mapTypeId : google.maps.MapTypeId.ROADMAP
	};
	map = new google.maps.Map(document.getElementById("map"), myOptions);

	// 为地图的缩放事件提供监听器
	// 当地图缩放级别小于默认缩放级别时回到当前设定缩放级别和原点
	/*
	 * google.maps.event.addListener(map, 'zoom_changed', function() { if
	 * (this.getZoom() < DefaultZoom) { CreateMarker(DefaultLat, DefaultLng,
	 * DefaultZoom); } });
	 */
	Marker();
}

/*
 * *****************************************************************************/
// 创建标记
/*
 * *****************************************************************************/
function CreateMarker(lat, lng, MyGoToCommunityZoom) {
	var wuzhouCenter = new google.maps.LatLng(lat, lng);
	var myOptions = {
		zoom : MyGoToCommunityZoom,
		center : wuzhouCenter,
		navigationControl : true,
		scaleControl : true,
		streetViewControl : true,
		mapTypeId : google.maps.MapTypeId.ROADMAP
	}
	map.setOptions(myOptions);
}

/*
 * *****************************************************************************/
// 距离
/*
 * *****************************************************************************/
function getDistance() {
	google.maps.event.addListener(map, "click", function(event) {
		addMarker(event.latLng);
	});
}
/*
 * *****************************************************************************/
// 取消测距的点击事件
/*
 * *****************************************************************************/
function clearLis() {

	google.maps.event.clearListeners(map, "click");
}

/*
 * *****************************************************************************/
// 添加测距新标记
/*
 * *****************************************************************************/
function addMarker(location) {
	if (lenArray.length == 0) {
		// 添加测距开始标记图标
		var icon = "http://www.google.com/mapfiles/dd-start.png";
	} else {
		if (lenArray.length >= 2) {
			marker.setMap(null);
		}
		// 添加测距结束标记图标
		var icon = "http://labs.google.com/ridefinder/images/mm_20_green.png";
	}
	// 标记选项
	var myOptions = {
		position : location,
		draggable : true,
		map : map,
		icon : icon
	};
	marker = new google.maps.Marker(myOptions);
	// 双击
	google.maps.event.addListener(marker, 'click', function() {
		// 放入marker
		lenArray.push(marker);
		drawOverlay();
	});
	// 拖动结束事件
	google.maps.event.addListener(marker, 'dragend', function() {
		lenArray.push(marker);
		drawOverlay();
	});
	lenArray.push(marker);
	drawOverlay();
}

/*
 * *****************************************************************************/
// 画出路径覆盖层
/*
 * *****************************************************************************/
function drawOverlay() {
	// 路线数组
	var flightPlanCoordinates = [];
	//  
	// 将坐标压入路线数组
	if (lenArray) {
		for (i in lenArray) {
			flightPlanCoordinates.push(lenArray[i].getPosition());
		}
	}
	// 路径选项
	var myOptions = {
		path : flightPlanCoordinates,
		map : map,
		strokeColor : "#FF0000",
		strokeOpacity : 1.0,
		strokeWeight : 2
	};
	polyline = new google.maps.Polyline(myOptions);
	// 清除原有折线路径
	if (polylinesArray) {
		for (i in polylinesArray) {
			polylinesArray[i].setMap(null);
		}
		polylinesArray = [];
	}
	polyline.setMap(map);
	// document.getElementById("sRes").innerHTML = (polyline.getLength() / 1000)
	// .toFixed(3);

	polylinesArray.push(polyline);
	showAndroidToast((polyline.getLength() / 1000).toFixed(3) + "");
}

/*
 * *****************************************************************************/
// 距离算法
/*
 * *****************************************************************************/
google.maps.LatLng.prototype.distanceFrom = function(latlng) {
	var lat = [ this.lat(), latlng.lat() ]
	var lng = [ this.lng(), latlng.lng() ] // var R = 6371; // km (change this
	// constant to get miles)
	var R = 6378137; // In meters
	var dLat = (lat[1] - lat[0]) * Math.PI / 180;
	var dLng = (lng[1] - lng[0]) * Math.PI / 180;
	var a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
			+ Math.cos(lat[0] * Math.PI / 180)
			* Math.cos(lat[1] * Math.PI / 180) * Math.sin(dLng / 2)
			* Math.sin(dLng / 2);
	var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
	var d = R * c;
	return Math.round(d);
}

/*
 * *****************************************************************************/
/*
 * *****************************************************************************/
google.maps.Marker.prototype.distanceFrom = function(marker) {
	return this.getPosition().distanceFrom(marker.getPosition());
}

/*
 * *****************************************************************************/
//折线的长度
/*
 * *****************************************************************************/
google.maps.Polyline.prototype.getLength = function() {
	var d = 0;
	var path = this.getPath();
	var latlng;
	for ( var i = 0; i < path.getLength() - 1; i++) {
		latlng = [ path.getAt(i), path.getAt(i + 1) ];
		d += latlng[0].distanceFrom(latlng[1]);
	}
	return d;
}

/*
 * *****************************************************************************/
// 删除所有叠加物
/*
 * *****************************************************************************/
function deleteOverlays() {
	if (lenArray) {
		for (i in lenArray) {
			lenArray[i].setMap(null);
		}
		lenArray.length = 0;
	}

	// 清除原有折线路径
	if (polylinesArray) {
		for (i in polylinesArray) {
			polylinesArray[i].setMap(null);
		}
		polylinesArray = [];
	}
}

var markerArr = [];
var markerInfo;
var point = [ baiyunshan, longmumiao, zhongshangongyuan, lijishen,
		changzhoujichang ];

var infowindow = new google.maps.InfoWindow({
	content : "djfhdsjfhsjdfhjdh",
});

/*
 * *****************************************************************************/
// 构造地理标注
/*
 * *****************************************************************************/
function Marker() {
	var center = map.getCenter();
	var latlng = null, markerInfo = null;
	markerArr = [];

	for ( var i = 0; i < 5; i++) {
		latlng = new google.maps.LatLng(point[i].lat1, point[i].lon1);
		markerInfo = new google.maps.Marker({
			position : latlng,
			title : point[i].name
		});
		markerArr.push(markerInfo);

	}
	setMarker();

}

/*
 * *****************************************************************************/
//标注的显示隐藏函数
/*
 * *****************************************************************************/
function markerFun() {
	var text1 = document.getElementById("showMarker").value;
	if (text1 == "显示景点") {
		setMarker();
		document.getElementById("showMarker").value = "隐藏景点";

	}
	if (text1 == "隐藏景点") {
		hideMarker();
		document.getElementById("showMarker").value = "显示景点";

	}
}

/*
 * *****************************************************************************/
// 信息提示窗口
/*
 * *****************************************************************************/
function openMarker(markerInfo, text) {
	google.maps.event.addListener(markerInfo, 'click', function() {
		infowindow.setContent(text);
		infowindow.open(map, markerInfo);
	});
}

/*
 * *****************************************************************************/
// 显示标注
/*
 * *****************************************************************************/
function setMarker() {
	var str = "<br><a href=http://www.baidu.com>详细信息</a>";
	var text = str;
	if (markerArr) {
		for ( var i in markerArr) {
			markerArr[i].setMap(map);
			openMarker(markerArr[i], point[i].name + text);
		}
	}
}

/*
 * *****************************************************************************/
//测距执行和取消函数
/*
 * *****************************************************************************/
function ceJu() {
	var text1 = document.getElementById("ceJu").value;
	if (text1 == "测距") {
		document.getElementById("ceJu").value = "取消测距";
		getDistance();
	}
	if (text1 == "取消测距") {
		document.getElementById("ceJu").value = "测距";
		clearLis();
	}
}

/*
 * *****************************************************************************/
// 隐藏标注
/*
 * *****************************************************************************/
function hideMarker() {
	if (markerArr) {
		for ( var i in markerArr) {
			markerArr[i].setMap(null);
		}
	}
}